if ( p->type == IOREQ_TYPE_PIO )
hvm_pio_assist(regs, p, io_opp);
- else {
+ else
hvm_mmio_assist(regs, p, io_opp);
- hvm_load_cpu_guest_regs(v, regs);
- }
/* Copy register changes back into current guest state. */
+ hvm_load_cpu_guest_regs(v, regs);
memcpy(guest_cpu_user_regs(), regs, HVM_CONTEXT_STACK_BYTES);
}
/* else an interrupt send event raced us */
/* Copy current guest state into io instruction state structure. */
memcpy(regs, guest_cpu_user_regs(), HVM_CONTEXT_STACK_BYTES);
-
hvm_store_cpu_guest_regs(v, regs, NULL);
if ((inst_len = hvm_instruction_length(v)) <= 0) {
/* Copy current guest state into io instruction state structure. */
memcpy(regs, guest_cpu_user_regs(), HVM_CONTEXT_STACK_BYTES);
+ hvm_store_cpu_guest_regs(v, regs, NULL);
info.bytes = vmcb->exitinfo1;
/* Copy current guest state into io instruction state structure. */
memcpy(regs, guest_cpu_user_regs(), HVM_CONTEXT_STACK_BYTES);
+ hvm_store_cpu_guest_regs(current, regs, NULL);
__vmread(GUEST_RIP, &eip);
__vmread(GUEST_CS_SELECTOR, &cs);